package com.tongcheng.service;

import com.tongcheng.pojo.Goods;
import org.apache.commons.fileupload.FileUploadException;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * ClassName: GoodsService
 * Description: TODO
 * Author: lcl
 * Date: 2020/11/26 14:26
 * Version: 1.0
 */
public interface GoodsService {
    /**
     * 根据商家id或商品id或商品名称或商品状态查询对应的商品信息
     * @param merchant_id
     * @return
     */
    List<Map> queryGoods(Integer merchant_id,Integer goods_id,String goods_name,Integer goods_shelves_id);

    /**
     * 商品状态信息查询
     * @return
     */
    List<Map> queryGoodsShelves();

    /**
     * 根据商品id查询对应的商品详细信息
     * @param goods_id
     * @return
     */
    List<Map> queryGoodById(Integer goods_id);

    /**
     * 商品图片类型查询
     * @return
     */
    List<Map> queryGoodImgType();

    /**
     * 商品添加
     * @param map
     * @return
     */
    int addGoods(Map map);

    /**
     * 根据商品id编辑对应的商品信息
     * @param map
     * @return
     */
    int editGoods(Map map);

    /**
     * 图片文件地址解析返回
     * @param goods
     * @return
     */
    Map uploadGoodsHomeImg(Goods goods,HttpServletRequest request) throws IOException, FileUploadException;

    /**
     * 商品详情页上传(商品详情页图片文件集合)
     * @param fileArrays
     * @param request
     * @return
     */
    String[] uploadGoodsImgUrl(MultipartFile[] fileArrays, HttpServletRequest request) throws IOException, FileUploadException;

    /**
     * 查询热销商品
     * @return
     */
    List<Map> querySellLikeGoods();

    /**
     * 查询所有参加团购商品
     * @return
     */
    List<Map> queryGroupBookGoods(String merchanr_goods_name);

    /**
     * 查询所有商品列表接口(可根据商品名称或店铺名称实现模糊查询)
     * @param merchanr_goods_name
     * @return
     */
    List<Map> queryGoodsApp(String merchanr_goods_name);

    /**
     * 根据商品id查询对应的商品详细信息(app端)
     * @param goods_id
     * @return
     */
    List<Map> queryGoodByIdApp(Integer goods_id);

    /**
     * 根据商品id查询该商品的规格信息（app返回参数）
     * @param goods_id
     * @return
     */
    List<Map> queryGoodSpecById(Integer goods_id);

    /**
     * 根据商品id下架对应的商品（可多个商品操作）
     * @param goodsList
     * @return
     */
    int deleGoods(Integer[] goodsList);
}
